/*
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
/*
 * This code was generated by https://code.google.com/p/google-apis-client-generator/
 * (build: 2014-11-17 18:43:33 UTC)
 * on 2014-12-20 at 18:08:51 UTC 
 * Modify at your own risk.
 */

package com.appspot.showup_app.showup;

/**
 * Service definition for Showup (v1).
 *
 * <p>
 * ShowUp API v1.
 * </p>
 *
 * <p>
 * For more information about this service, see the
 * <a href="" target="_blank">API Documentation</a>
 * </p>
 *
 * <p>
 * This service uses {@link ShowupRequestInitializer} to initialize global parameters via its
 * {@link Builder}.
 * </p>
 *
 * @since 1.3
 * @author Google, Inc.
 */
@SuppressWarnings("javadoc")
public class Showup extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient {

  // Note: Leave this static initializer at the top of the file.
  static {
    com.google.api.client.util.Preconditions.checkState(
        com.google.api.client.googleapis.GoogleUtils.MAJOR_VERSION == 1 &&
        com.google.api.client.googleapis.GoogleUtils.MINOR_VERSION >= 15,
        "You are currently running with version %s of google-api-client. " +
        "You need at least version 1.15 of google-api-client to run version " +
        "1.19.0 of the showup library.", com.google.api.client.googleapis.GoogleUtils.VERSION);
  }

  /**
   * The default encoded root URL of the service. This is determined when the library is generated
   * and normally should not be changed.
   *
   * @since 1.7
   */
  public static final String DEFAULT_ROOT_URL = "https://showup-app.appspot.com/_ah/api/";

  /**
   * The default encoded service path of the service. This is determined when the library is
   * generated and normally should not be changed.
   *
   * @since 1.7
   */
  public static final String DEFAULT_SERVICE_PATH = "showup/v1/";

  /**
   * The default encoded base URL of the service. This is determined when the library is generated
   * and normally should not be changed.
   */
  public static final String DEFAULT_BASE_URL = DEFAULT_ROOT_URL + DEFAULT_SERVICE_PATH;

  /**
   * Constructor.
   *
   * <p>
   * Use {@link Builder} if you need to specify any of the optional parameters.
   * </p>
   *
   * @param transport HTTP transport, which should normally be:
   *        <ul>
   *        <li>Google App Engine:
   *        {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}</li>
   *        <li>Android: {@code newCompatibleTransport} from
   *        {@code com.google.api.client.extensions.android.http.AndroidHttp}</li>
   *        <li>Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()}
   *        </li>
   *        </ul>
   * @param jsonFactory JSON factory, which may be:
   *        <ul>
   *        <li>Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}</li>
   *        <li>Google GSON: {@code com.google.api.client.json.gson.GsonFactory}</li>
   *        <li>Android Honeycomb or higher:
   *        {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}</li>
   *        </ul>
   * @param httpRequestInitializer HTTP request initializer or {@code null} for none
   * @since 1.7
   */
  public Showup(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory,
      com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
    this(new Builder(transport, jsonFactory, httpRequestInitializer));
  }

  /**
   * @param builder builder
   */
  Showup(Builder builder) {
    super(builder);
  }

  @Override
  protected void initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest<?> httpClientRequest) throws java.io.IOException {
    super.initialize(httpClientRequest);
  }

  /**
   * An accessor for creating requests from the Appointment collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code Showup showup = new Showup(...);}
   *   {@code Showup.Appointment.List request = showup.appointment().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Appointment appointment() {
    return new Appointment();
  }

  /**
   * The "appointment" collection of methods.
   */
  public class Appointment {

    /**
     * Create a request for the method "appointment.add".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Add#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.appspot.showup_app.showup.model.ShowUpAppointmentMessage}
     * @return the request
     */
    public Add add(com.appspot.showup_app.showup.model.ShowUpAppointmentMessage content) throws java.io.IOException {
      Add result = new Add(content);
      initialize(result);
      return result;
    }

    public class Add extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpAppointmentMessage> {

      private static final String REST_PATH = "appointment";

      /**
       * Create a request for the method "appointment.add".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Add#execute()} method to invoke the remote operation. <p> {@link
       * Add#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.appspot.showup_app.showup.model.ShowUpAppointmentMessage}
       * @since 1.13
       */
      protected Add(com.appspot.showup_app.showup.model.ShowUpAppointmentMessage content) {
        super(Showup.this, "POST", REST_PATH, content, com.appspot.showup_app.showup.model.ShowUpAppointmentMessage.class);
      }

      @Override
      public Add setAlt(java.lang.String alt) {
        return (Add) super.setAlt(alt);
      }

      @Override
      public Add setFields(java.lang.String fields) {
        return (Add) super.setFields(fields);
      }

      @Override
      public Add setKey(java.lang.String key) {
        return (Add) super.setKey(key);
      }

      @Override
      public Add setOauthToken(java.lang.String oauthToken) {
        return (Add) super.setOauthToken(oauthToken);
      }

      @Override
      public Add setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Add) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Add setQuotaUser(java.lang.String quotaUser) {
        return (Add) super.setQuotaUser(quotaUser);
      }

      @Override
      public Add setUserIp(java.lang.String userIp) {
        return (Add) super.setUserIp(userIp);
      }

      @Override
      public Add set(String parameterName, Object value) {
        return (Add) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "appointment.confirm".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Confirm#execute()} method to invoke the remote operation.
     *
     * @param id
     * @param token
     * @return the request
     */
    public Confirm confirm(java.lang.String id, java.lang.String token) throws java.io.IOException {
      Confirm result = new Confirm(id, token);
      initialize(result);
      return result;
    }

    public class Confirm extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpAppointmentMessage> {

      private static final String REST_PATH = "appointment/confirm/{id}/{token}";

      /**
       * Create a request for the method "appointment.confirm".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Confirm#execute()} method to invoke the remote operation. <p>
       * {@link
       * Confirm#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param id
       * @param token
       * @since 1.13
       */
      protected Confirm(java.lang.String id, java.lang.String token) {
        super(Showup.this, "PATCH", REST_PATH, null, com.appspot.showup_app.showup.model.ShowUpAppointmentMessage.class);
        this.id = com.google.api.client.util.Preconditions.checkNotNull(id, "Required parameter id must be specified.");
        this.token = com.google.api.client.util.Preconditions.checkNotNull(token, "Required parameter token must be specified.");
      }

      @Override
      public Confirm setAlt(java.lang.String alt) {
        return (Confirm) super.setAlt(alt);
      }

      @Override
      public Confirm setFields(java.lang.String fields) {
        return (Confirm) super.setFields(fields);
      }

      @Override
      public Confirm setKey(java.lang.String key) {
        return (Confirm) super.setKey(key);
      }

      @Override
      public Confirm setOauthToken(java.lang.String oauthToken) {
        return (Confirm) super.setOauthToken(oauthToken);
      }

      @Override
      public Confirm setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Confirm) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Confirm setQuotaUser(java.lang.String quotaUser) {
        return (Confirm) super.setQuotaUser(quotaUser);
      }

      @Override
      public Confirm setUserIp(java.lang.String userIp) {
        return (Confirm) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.lang.String id;

      /**

       */
      public java.lang.String getId() {
        return id;
      }

      public Confirm setId(java.lang.String id) {
        this.id = id;
        return this;
      }

      @com.google.api.client.util.Key
      private java.lang.String token;

      /**

       */
      public java.lang.String getToken() {
        return token;
      }

      public Confirm setToken(java.lang.String token) {
        this.token = token;
        return this;
      }

      @Override
      public Confirm set(String parameterName, Object value) {
        return (Confirm) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "appointment.decline".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Decline#execute()} method to invoke the remote operation.
     *
     * @param id
     * @param token
     * @return the request
     */
    public Decline decline(java.lang.String id, java.lang.String token) throws java.io.IOException {
      Decline result = new Decline(id, token);
      initialize(result);
      return result;
    }

    public class Decline extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpAppointmentMessage> {

      private static final String REST_PATH = "appointment/decline/{id}/{token}";

      /**
       * Create a request for the method "appointment.decline".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Decline#execute()} method to invoke the remote operation. <p>
       * {@link
       * Decline#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param id
       * @param token
       * @since 1.13
       */
      protected Decline(java.lang.String id, java.lang.String token) {
        super(Showup.this, "PATCH", REST_PATH, null, com.appspot.showup_app.showup.model.ShowUpAppointmentMessage.class);
        this.id = com.google.api.client.util.Preconditions.checkNotNull(id, "Required parameter id must be specified.");
        this.token = com.google.api.client.util.Preconditions.checkNotNull(token, "Required parameter token must be specified.");
      }

      @Override
      public Decline setAlt(java.lang.String alt) {
        return (Decline) super.setAlt(alt);
      }

      @Override
      public Decline setFields(java.lang.String fields) {
        return (Decline) super.setFields(fields);
      }

      @Override
      public Decline setKey(java.lang.String key) {
        return (Decline) super.setKey(key);
      }

      @Override
      public Decline setOauthToken(java.lang.String oauthToken) {
        return (Decline) super.setOauthToken(oauthToken);
      }

      @Override
      public Decline setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Decline) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Decline setQuotaUser(java.lang.String quotaUser) {
        return (Decline) super.setQuotaUser(quotaUser);
      }

      @Override
      public Decline setUserIp(java.lang.String userIp) {
        return (Decline) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.lang.String id;

      /**

       */
      public java.lang.String getId() {
        return id;
      }

      public Decline setId(java.lang.String id) {
        this.id = id;
        return this;
      }

      @com.google.api.client.util.Key
      private java.lang.String token;

      /**

       */
      public java.lang.String getToken() {
        return token;
      }

      public Decline setToken(java.lang.String token) {
        this.token = token;
        return this;
      }

      @Override
      public Decline set(String parameterName, Object value) {
        return (Decline) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "appointment.delete".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
     *
     * @param id
     * @return the request
     */
    public Delete delete(java.lang.String id) throws java.io.IOException {
      Delete result = new Delete(id);
      initialize(result);
      return result;
    }

    public class Delete extends ShowupRequest<Void> {

      private static final String REST_PATH = "appointment/{id}";

      /**
       * Create a request for the method "appointment.delete".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Delete#execute()} method to invoke the remote operation. <p> {@link
       * Delete#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param id
       * @since 1.13
       */
      protected Delete(java.lang.String id) {
        super(Showup.this, "DELETE", REST_PATH, null, Void.class);
        this.id = com.google.api.client.util.Preconditions.checkNotNull(id, "Required parameter id must be specified.");
      }

      @Override
      public Delete setAlt(java.lang.String alt) {
        return (Delete) super.setAlt(alt);
      }

      @Override
      public Delete setFields(java.lang.String fields) {
        return (Delete) super.setFields(fields);
      }

      @Override
      public Delete setKey(java.lang.String key) {
        return (Delete) super.setKey(key);
      }

      @Override
      public Delete setOauthToken(java.lang.String oauthToken) {
        return (Delete) super.setOauthToken(oauthToken);
      }

      @Override
      public Delete setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Delete) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Delete setQuotaUser(java.lang.String quotaUser) {
        return (Delete) super.setQuotaUser(quotaUser);
      }

      @Override
      public Delete setUserIp(java.lang.String userIp) {
        return (Delete) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.lang.String id;

      /**

       */
      public java.lang.String getId() {
        return id;
      }

      public Delete setId(java.lang.String id) {
        this.id = id;
        return this;
      }

      @Override
      public Delete set(String parameterName, Object value) {
        return (Delete) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "appointment.edit".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Edit#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.appspot.showup_app.showup.model.ShowUpAppointmentMessage}
     * @return the request
     */
    public Edit edit(com.appspot.showup_app.showup.model.ShowUpAppointmentMessage content) throws java.io.IOException {
      Edit result = new Edit(content);
      initialize(result);
      return result;
    }

    public class Edit extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpAppointmentMessage> {

      private static final String REST_PATH = "appointment";

      /**
       * Create a request for the method "appointment.edit".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Edit#execute()} method to invoke the remote operation. <p> {@link
       * Edit#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.appspot.showup_app.showup.model.ShowUpAppointmentMessage}
       * @since 1.13
       */
      protected Edit(com.appspot.showup_app.showup.model.ShowUpAppointmentMessage content) {
        super(Showup.this, "PUT", REST_PATH, content, com.appspot.showup_app.showup.model.ShowUpAppointmentMessage.class);
      }

      @Override
      public Edit setAlt(java.lang.String alt) {
        return (Edit) super.setAlt(alt);
      }

      @Override
      public Edit setFields(java.lang.String fields) {
        return (Edit) super.setFields(fields);
      }

      @Override
      public Edit setKey(java.lang.String key) {
        return (Edit) super.setKey(key);
      }

      @Override
      public Edit setOauthToken(java.lang.String oauthToken) {
        return (Edit) super.setOauthToken(oauthToken);
      }

      @Override
      public Edit setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Edit) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Edit setQuotaUser(java.lang.String quotaUser) {
        return (Edit) super.setQuotaUser(quotaUser);
      }

      @Override
      public Edit setUserIp(java.lang.String userIp) {
        return (Edit) super.setUserIp(userIp);
      }

      @Override
      public Edit set(String parameterName, Object value) {
        return (Edit) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "appointment.get".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Get#execute()} method to invoke the remote operation.
     *
     * @param id
     * @param token
     * @return the request
     */
    public Get get(java.lang.String id, java.lang.String token) throws java.io.IOException {
      Get result = new Get(id, token);
      initialize(result);
      return result;
    }

    public class Get extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpWebAppointmentMessage> {

      private static final String REST_PATH = "appointment/{id}/{token}";

      /**
       * Create a request for the method "appointment.get".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Get#execute()} method to invoke the remote operation. <p> {@link
       * Get#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param id
       * @param token
       * @since 1.13
       */
      protected Get(java.lang.String id, java.lang.String token) {
        super(Showup.this, "GET", REST_PATH, null, com.appspot.showup_app.showup.model.ShowUpWebAppointmentMessage.class);
        this.id = com.google.api.client.util.Preconditions.checkNotNull(id, "Required parameter id must be specified.");
        this.token = com.google.api.client.util.Preconditions.checkNotNull(token, "Required parameter token must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public Get setAlt(java.lang.String alt) {
        return (Get) super.setAlt(alt);
      }

      @Override
      public Get setFields(java.lang.String fields) {
        return (Get) super.setFields(fields);
      }

      @Override
      public Get setKey(java.lang.String key) {
        return (Get) super.setKey(key);
      }

      @Override
      public Get setOauthToken(java.lang.String oauthToken) {
        return (Get) super.setOauthToken(oauthToken);
      }

      @Override
      public Get setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Get) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Get setQuotaUser(java.lang.String quotaUser) {
        return (Get) super.setQuotaUser(quotaUser);
      }

      @Override
      public Get setUserIp(java.lang.String userIp) {
        return (Get) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.lang.String id;

      /**

       */
      public java.lang.String getId() {
        return id;
      }

      public Get setId(java.lang.String id) {
        this.id = id;
        return this;
      }

      @com.google.api.client.util.Key
      private java.lang.String token;

      /**

       */
      public java.lang.String getToken() {
        return token;
      }

      public Get setToken(java.lang.String token) {
        this.token = token;
        return this;
      }

      @Override
      public Get set(String parameterName, Object value) {
        return (Get) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Appointments collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code Showup showup = new Showup(...);}
   *   {@code Showup.Appointments.List request = showup.appointments().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Appointments appointments() {
    return new Appointments();
  }

  /**
   * The "appointments" collection of methods.
   */
  public class Appointments {

    /**
     * Create a request for the method "appointments.list".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link List#execute()} method to invoke the remote operation.
     *
     * @return the request
     */
    public List list() throws java.io.IOException {
      List result = new List();
      initialize(result);
      return result;
    }

    public class List extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpAppointmentCollection> {

      private static final String REST_PATH = "appointment";

      /**
       * Create a request for the method "appointments.list".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation. <p> {@link
       * List#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @since 1.13
       */
      protected List() {
        super(Showup.this, "GET", REST_PATH, null, com.appspot.showup_app.showup.model.ShowUpAppointmentCollection.class);
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public List setAlt(java.lang.String alt) {
        return (List) super.setAlt(alt);
      }

      @Override
      public List setFields(java.lang.String fields) {
        return (List) super.setFields(fields);
      }

      @Override
      public List setKey(java.lang.String key) {
        return (List) super.setKey(key);
      }

      @Override
      public List setOauthToken(java.lang.String oauthToken) {
        return (List) super.setOauthToken(oauthToken);
      }

      @Override
      public List setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (List) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public List setQuotaUser(java.lang.String quotaUser) {
        return (List) super.setQuotaUser(quotaUser);
      }

      @Override
      public List setUserIp(java.lang.String userIp) {
        return (List) super.setUserIp(userIp);
      }

      @Override
      public List set(String parameterName, Object value) {
        return (List) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Business collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code Showup showup = new Showup(...);}
   *   {@code Showup.Business.List request = showup.business().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Business business() {
    return new Business();
  }

  /**
   * The "business" collection of methods.
   */
  public class Business {

    /**
     * Create a request for the method "business.edit".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Edit#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.appspot.showup_app.showup.model.ShowUpBusinessMessage}
     * @return the request
     */
    public Edit edit(com.appspot.showup_app.showup.model.ShowUpBusinessMessage content) throws java.io.IOException {
      Edit result = new Edit(content);
      initialize(result);
      return result;
    }

    public class Edit extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpBusinessMessage> {

      private static final String REST_PATH = "business";

      /**
       * Create a request for the method "business.edit".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Edit#execute()} method to invoke the remote operation. <p> {@link
       * Edit#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.appspot.showup_app.showup.model.ShowUpBusinessMessage}
       * @since 1.13
       */
      protected Edit(com.appspot.showup_app.showup.model.ShowUpBusinessMessage content) {
        super(Showup.this, "POST", REST_PATH, content, com.appspot.showup_app.showup.model.ShowUpBusinessMessage.class);
      }

      @Override
      public Edit setAlt(java.lang.String alt) {
        return (Edit) super.setAlt(alt);
      }

      @Override
      public Edit setFields(java.lang.String fields) {
        return (Edit) super.setFields(fields);
      }

      @Override
      public Edit setKey(java.lang.String key) {
        return (Edit) super.setKey(key);
      }

      @Override
      public Edit setOauthToken(java.lang.String oauthToken) {
        return (Edit) super.setOauthToken(oauthToken);
      }

      @Override
      public Edit setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Edit) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Edit setQuotaUser(java.lang.String quotaUser) {
        return (Edit) super.setQuotaUser(quotaUser);
      }

      @Override
      public Edit setUserIp(java.lang.String userIp) {
        return (Edit) super.setUserIp(userIp);
      }

      @Override
      public Edit set(String parameterName, Object value) {
        return (Edit) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "business.get".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Get#execute()} method to invoke the remote operation.
     *
     * @return the request
     */
    public Get get() throws java.io.IOException {
      Get result = new Get();
      initialize(result);
      return result;
    }

    public class Get extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpBusinessMessage> {

      private static final String REST_PATH = "business";

      /**
       * Create a request for the method "business.get".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Get#execute()} method to invoke the remote operation. <p> {@link
       * Get#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @since 1.13
       */
      protected Get() {
        super(Showup.this, "GET", REST_PATH, null, com.appspot.showup_app.showup.model.ShowUpBusinessMessage.class);
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public Get setAlt(java.lang.String alt) {
        return (Get) super.setAlt(alt);
      }

      @Override
      public Get setFields(java.lang.String fields) {
        return (Get) super.setFields(fields);
      }

      @Override
      public Get setKey(java.lang.String key) {
        return (Get) super.setKey(key);
      }

      @Override
      public Get setOauthToken(java.lang.String oauthToken) {
        return (Get) super.setOauthToken(oauthToken);
      }

      @Override
      public Get setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Get) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Get setQuotaUser(java.lang.String quotaUser) {
        return (Get) super.setQuotaUser(quotaUser);
      }

      @Override
      public Get setUserIp(java.lang.String userIp) {
        return (Get) super.setUserIp(userIp);
      }

      @Override
      public Get set(String parameterName, Object value) {
        return (Get) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Customer collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code Showup showup = new Showup(...);}
   *   {@code Showup.Customer.List request = showup.customer().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Customer customer() {
    return new Customer();
  }

  /**
   * The "customer" collection of methods.
   */
  public class Customer {

    /**
     * Create a request for the method "customer.add".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Add#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.appspot.showup_app.showup.model.ShowUpCustomerMessage}
     * @return the request
     */
    public Add add(com.appspot.showup_app.showup.model.ShowUpCustomerMessage content) throws java.io.IOException {
      Add result = new Add(content);
      initialize(result);
      return result;
    }

    public class Add extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpCustomerMessage> {

      private static final String REST_PATH = "customer";

      /**
       * Create a request for the method "customer.add".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Add#execute()} method to invoke the remote operation. <p> {@link
       * Add#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.appspot.showup_app.showup.model.ShowUpCustomerMessage}
       * @since 1.13
       */
      protected Add(com.appspot.showup_app.showup.model.ShowUpCustomerMessage content) {
        super(Showup.this, "POST", REST_PATH, content, com.appspot.showup_app.showup.model.ShowUpCustomerMessage.class);
      }

      @Override
      public Add setAlt(java.lang.String alt) {
        return (Add) super.setAlt(alt);
      }

      @Override
      public Add setFields(java.lang.String fields) {
        return (Add) super.setFields(fields);
      }

      @Override
      public Add setKey(java.lang.String key) {
        return (Add) super.setKey(key);
      }

      @Override
      public Add setOauthToken(java.lang.String oauthToken) {
        return (Add) super.setOauthToken(oauthToken);
      }

      @Override
      public Add setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Add) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Add setQuotaUser(java.lang.String quotaUser) {
        return (Add) super.setQuotaUser(quotaUser);
      }

      @Override
      public Add setUserIp(java.lang.String userIp) {
        return (Add) super.setUserIp(userIp);
      }

      @Override
      public Add set(String parameterName, Object value) {
        return (Add) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "customer.block".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Block#execute()} method to invoke the remote operation.
     *
     * @param id
     * @param token
     * @return the request
     */
    public Block block(java.lang.String id, java.lang.String token) throws java.io.IOException {
      Block result = new Block(id, token);
      initialize(result);
      return result;
    }

    public class Block extends ShowupRequest<Void> {

      private static final String REST_PATH = "customer/{id}/{token}";

      /**
       * Create a request for the method "customer.block".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Block#execute()} method to invoke the remote operation. <p> {@link
       * Block#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param id
       * @param token
       * @since 1.13
       */
      protected Block(java.lang.String id, java.lang.String token) {
        super(Showup.this, "PATCH", REST_PATH, null, Void.class);
        this.id = com.google.api.client.util.Preconditions.checkNotNull(id, "Required parameter id must be specified.");
        this.token = com.google.api.client.util.Preconditions.checkNotNull(token, "Required parameter token must be specified.");
      }

      @Override
      public Block setAlt(java.lang.String alt) {
        return (Block) super.setAlt(alt);
      }

      @Override
      public Block setFields(java.lang.String fields) {
        return (Block) super.setFields(fields);
      }

      @Override
      public Block setKey(java.lang.String key) {
        return (Block) super.setKey(key);
      }

      @Override
      public Block setOauthToken(java.lang.String oauthToken) {
        return (Block) super.setOauthToken(oauthToken);
      }

      @Override
      public Block setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Block) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Block setQuotaUser(java.lang.String quotaUser) {
        return (Block) super.setQuotaUser(quotaUser);
      }

      @Override
      public Block setUserIp(java.lang.String userIp) {
        return (Block) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.lang.String id;

      /**

       */
      public java.lang.String getId() {
        return id;
      }

      public Block setId(java.lang.String id) {
        this.id = id;
        return this;
      }

      @com.google.api.client.util.Key
      private java.lang.String token;

      /**

       */
      public java.lang.String getToken() {
        return token;
      }

      public Block setToken(java.lang.String token) {
        this.token = token;
        return this;
      }

      @Override
      public Block set(String parameterName, Object value) {
        return (Block) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "customer.delete".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Delete#execute()} method to invoke the remote operation.
     *
     * @param id
     * @return the request
     */
    public Delete delete(java.lang.String id) throws java.io.IOException {
      Delete result = new Delete(id);
      initialize(result);
      return result;
    }

    public class Delete extends ShowupRequest<Void> {

      private static final String REST_PATH = "customer";

      /**
       * Create a request for the method "customer.delete".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Delete#execute()} method to invoke the remote operation. <p> {@link
       * Delete#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must
       * be called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param id
       * @since 1.13
       */
      protected Delete(java.lang.String id) {
        super(Showup.this, "DELETE", REST_PATH, null, Void.class);
        this.id = com.google.api.client.util.Preconditions.checkNotNull(id, "Required parameter id must be specified.");
      }

      @Override
      public Delete setAlt(java.lang.String alt) {
        return (Delete) super.setAlt(alt);
      }

      @Override
      public Delete setFields(java.lang.String fields) {
        return (Delete) super.setFields(fields);
      }

      @Override
      public Delete setKey(java.lang.String key) {
        return (Delete) super.setKey(key);
      }

      @Override
      public Delete setOauthToken(java.lang.String oauthToken) {
        return (Delete) super.setOauthToken(oauthToken);
      }

      @Override
      public Delete setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Delete) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Delete setQuotaUser(java.lang.String quotaUser) {
        return (Delete) super.setQuotaUser(quotaUser);
      }

      @Override
      public Delete setUserIp(java.lang.String userIp) {
        return (Delete) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.lang.String id;

      /**

       */
      public java.lang.String getId() {
        return id;
      }

      public Delete setId(java.lang.String id) {
        this.id = id;
        return this;
      }

      @Override
      public Delete set(String parameterName, Object value) {
        return (Delete) super.set(parameterName, value);
      }
    }
    /**
     * Create a request for the method "customer.edit".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Edit#execute()} method to invoke the remote operation.
     *
     * @param content the {@link com.appspot.showup_app.showup.model.ShowUpCustomerMessage}
     * @return the request
     */
    public Edit edit(com.appspot.showup_app.showup.model.ShowUpCustomerMessage content) throws java.io.IOException {
      Edit result = new Edit(content);
      initialize(result);
      return result;
    }

    public class Edit extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpCustomerMessage> {

      private static final String REST_PATH = "customer";

      /**
       * Create a request for the method "customer.edit".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Edit#execute()} method to invoke the remote operation. <p> {@link
       * Edit#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param content the {@link com.appspot.showup_app.showup.model.ShowUpCustomerMessage}
       * @since 1.13
       */
      protected Edit(com.appspot.showup_app.showup.model.ShowUpCustomerMessage content) {
        super(Showup.this, "PUT", REST_PATH, content, com.appspot.showup_app.showup.model.ShowUpCustomerMessage.class);
      }

      @Override
      public Edit setAlt(java.lang.String alt) {
        return (Edit) super.setAlt(alt);
      }

      @Override
      public Edit setFields(java.lang.String fields) {
        return (Edit) super.setFields(fields);
      }

      @Override
      public Edit setKey(java.lang.String key) {
        return (Edit) super.setKey(key);
      }

      @Override
      public Edit setOauthToken(java.lang.String oauthToken) {
        return (Edit) super.setOauthToken(oauthToken);
      }

      @Override
      public Edit setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Edit) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Edit setQuotaUser(java.lang.String quotaUser) {
        return (Edit) super.setQuotaUser(quotaUser);
      }

      @Override
      public Edit setUserIp(java.lang.String userIp) {
        return (Edit) super.setUserIp(userIp);
      }

      @Override
      public Edit set(String parameterName, Object value) {
        return (Edit) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Customers collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code Showup showup = new Showup(...);}
   *   {@code Showup.Customers.List request = showup.customers().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Customers customers() {
    return new Customers();
  }

  /**
   * The "customers" collection of methods.
   */
  public class Customers {

    /**
     * Create a request for the method "customers.list".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link List#execute()} method to invoke the remote operation.
     *
     * @return the request
     */
    public List list() throws java.io.IOException {
      List result = new List();
      initialize(result);
      return result;
    }

    public class List extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpCustomerCollection> {

      private static final String REST_PATH = "customer";

      /**
       * Create a request for the method "customers.list".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation. <p> {@link
       * List#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @since 1.13
       */
      protected List() {
        super(Showup.this, "GET", REST_PATH, null, com.appspot.showup_app.showup.model.ShowUpCustomerCollection.class);
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public List setAlt(java.lang.String alt) {
        return (List) super.setAlt(alt);
      }

      @Override
      public List setFields(java.lang.String fields) {
        return (List) super.setFields(fields);
      }

      @Override
      public List setKey(java.lang.String key) {
        return (List) super.setKey(key);
      }

      @Override
      public List setOauthToken(java.lang.String oauthToken) {
        return (List) super.setOauthToken(oauthToken);
      }

      @Override
      public List setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (List) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public List setQuotaUser(java.lang.String quotaUser) {
        return (List) super.setQuotaUser(quotaUser);
      }

      @Override
      public List setUserIp(java.lang.String userIp) {
        return (List) super.setUserIp(userIp);
      }

      @Override
      public List set(String parameterName, Object value) {
        return (List) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Notifications collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code Showup showup = new Showup(...);}
   *   {@code Showup.Notifications.List request = showup.notifications().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Notifications notifications() {
    return new Notifications();
  }

  /**
   * The "notifications" collection of methods.
   */
  public class Notifications {

    /**
     * Create a request for the method "notifications.send".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Send#execute()} method to invoke the remote operation.
     *
     * @return the request
     */
    public Send send() throws java.io.IOException {
      Send result = new Send();
      initialize(result);
      return result;
    }

    public class Send extends ShowupRequest<Void> {

      private static final String REST_PATH = "notifications";

      /**
       * Create a request for the method "notifications.send".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Send#execute()} method to invoke the remote operation. <p> {@link
       * Send#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @since 1.13
       */
      protected Send() {
        super(Showup.this, "GET", REST_PATH, null, Void.class);
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public Send setAlt(java.lang.String alt) {
        return (Send) super.setAlt(alt);
      }

      @Override
      public Send setFields(java.lang.String fields) {
        return (Send) super.setFields(fields);
      }

      @Override
      public Send setKey(java.lang.String key) {
        return (Send) super.setKey(key);
      }

      @Override
      public Send setOauthToken(java.lang.String oauthToken) {
        return (Send) super.setOauthToken(oauthToken);
      }

      @Override
      public Send setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Send) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Send setQuotaUser(java.lang.String quotaUser) {
        return (Send) super.setQuotaUser(quotaUser);
      }

      @Override
      public Send setUserIp(java.lang.String userIp) {
        return (Send) super.setUserIp(userIp);
      }

      @Override
      public Send set(String parameterName, Object value) {
        return (Send) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the Updates collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code Showup showup = new Showup(...);}
   *   {@code Showup.Updates.List request = showup.updates().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public Updates updates() {
    return new Updates();
  }

  /**
   * The "updates" collection of methods.
   */
  public class Updates {

    /**
     * Create a request for the method "updates.list".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link List#execute()} method to invoke the remote operation.
     *
     * @param timestamp
     * @return the request
     */
    public List list(java.lang.Long timestamp) throws java.io.IOException {
      List result = new List(timestamp);
      initialize(result);
      return result;
    }

    public class List extends ShowupRequest<com.appspot.showup_app.showup.model.ShowUpUpdatesCollection> {

      private static final String REST_PATH = "update/{timestamp}";

      /**
       * Create a request for the method "updates.list".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link List#execute()} method to invoke the remote operation. <p> {@link
       * List#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param timestamp
       * @since 1.13
       */
      protected List(java.lang.Long timestamp) {
        super(Showup.this, "GET", REST_PATH, null, com.appspot.showup_app.showup.model.ShowUpUpdatesCollection.class);
        this.timestamp = com.google.api.client.util.Preconditions.checkNotNull(timestamp, "Required parameter timestamp must be specified.");
      }

      @Override
      public com.google.api.client.http.HttpResponse executeUsingHead() throws java.io.IOException {
        return super.executeUsingHead();
      }

      @Override
      public com.google.api.client.http.HttpRequest buildHttpRequestUsingHead() throws java.io.IOException {
        return super.buildHttpRequestUsingHead();
      }

      @Override
      public List setAlt(java.lang.String alt) {
        return (List) super.setAlt(alt);
      }

      @Override
      public List setFields(java.lang.String fields) {
        return (List) super.setFields(fields);
      }

      @Override
      public List setKey(java.lang.String key) {
        return (List) super.setKey(key);
      }

      @Override
      public List setOauthToken(java.lang.String oauthToken) {
        return (List) super.setOauthToken(oauthToken);
      }

      @Override
      public List setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (List) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public List setQuotaUser(java.lang.String quotaUser) {
        return (List) super.setQuotaUser(quotaUser);
      }

      @Override
      public List setUserIp(java.lang.String userIp) {
        return (List) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key
      private java.lang.Long timestamp;

      /**

       */
      public java.lang.Long getTimestamp() {
        return timestamp;
      }

      public List setTimestamp(java.lang.Long timestamp) {
        this.timestamp = timestamp;
        return this;
      }

      @Override
      public List set(String parameterName, Object value) {
        return (List) super.set(parameterName, value);
      }
    }

  }

  /**
   * An accessor for creating requests from the User collection.
   *
   * <p>The typical use is:</p>
   * <pre>
   *   {@code Showup showup = new Showup(...);}
   *   {@code Showup.User.List request = showup.user().list(parameters ...)}
   * </pre>
   *
   * @return the resource collection
   */
  public User user() {
    return new User();
  }

  /**
   * The "user" collection of methods.
   */
  public class User {

    /**
     * Create a request for the method "user.auth".
     *
     * This request holds the parameters needed by the showup server.  After setting any optional
     * parameters, call the {@link Auth#execute()} method to invoke the remote operation.
     *
     * @param exchangeToken
     * @return the request
     */
    public Auth auth(java.lang.String exchangeToken) throws java.io.IOException {
      Auth result = new Auth(exchangeToken);
      initialize(result);
      return result;
    }

    public class Auth extends ShowupRequest<Void> {

      private static final String REST_PATH = "user/auth/{exchange_token}";

      /**
       * Create a request for the method "user.auth".
       *
       * This request holds the parameters needed by the the showup server.  After setting any optional
       * parameters, call the {@link Auth#execute()} method to invoke the remote operation. <p> {@link
       * Auth#initialize(com.google.api.client.googleapis.services.AbstractGoogleClientRequest)} must be
       * called to initialize this instance immediately after invoking the constructor. </p>
       *
       * @param exchangeToken
       * @since 1.13
       */
      protected Auth(java.lang.String exchangeToken) {
        super(Showup.this, "PUT", REST_PATH, null, Void.class);
        this.exchangeToken = com.google.api.client.util.Preconditions.checkNotNull(exchangeToken, "Required parameter exchangeToken must be specified.");
      }

      @Override
      public Auth setAlt(java.lang.String alt) {
        return (Auth) super.setAlt(alt);
      }

      @Override
      public Auth setFields(java.lang.String fields) {
        return (Auth) super.setFields(fields);
      }

      @Override
      public Auth setKey(java.lang.String key) {
        return (Auth) super.setKey(key);
      }

      @Override
      public Auth setOauthToken(java.lang.String oauthToken) {
        return (Auth) super.setOauthToken(oauthToken);
      }

      @Override
      public Auth setPrettyPrint(java.lang.Boolean prettyPrint) {
        return (Auth) super.setPrettyPrint(prettyPrint);
      }

      @Override
      public Auth setQuotaUser(java.lang.String quotaUser) {
        return (Auth) super.setQuotaUser(quotaUser);
      }

      @Override
      public Auth setUserIp(java.lang.String userIp) {
        return (Auth) super.setUserIp(userIp);
      }

      @com.google.api.client.util.Key("exchange_token")
      private java.lang.String exchangeToken;

      /**

       */
      public java.lang.String getExchangeToken() {
        return exchangeToken;
      }

      public Auth setExchangeToken(java.lang.String exchangeToken) {
        this.exchangeToken = exchangeToken;
        return this;
      }

      @Override
      public Auth set(String parameterName, Object value) {
        return (Auth) super.set(parameterName, value);
      }
    }

  }

  /**
   * Builder for {@link Showup}.
   *
   * <p>
   * Implementation is not thread-safe.
   * </p>
   *
   * @since 1.3.0
   */
  public static final class Builder extends com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient.Builder {

    /**
     * Returns an instance of a new builder.
     *
     * @param transport HTTP transport, which should normally be:
     *        <ul>
     *        <li>Google App Engine:
     *        {@code com.google.api.client.extensions.appengine.http.UrlFetchTransport}</li>
     *        <li>Android: {@code newCompatibleTransport} from
     *        {@code com.google.api.client.extensions.android.http.AndroidHttp}</li>
     *        <li>Java: {@link com.google.api.client.googleapis.javanet.GoogleNetHttpTransport#newTrustedTransport()}
     *        </li>
     *        </ul>
     * @param jsonFactory JSON factory, which may be:
     *        <ul>
     *        <li>Jackson: {@code com.google.api.client.json.jackson2.JacksonFactory}</li>
     *        <li>Google GSON: {@code com.google.api.client.json.gson.GsonFactory}</li>
     *        <li>Android Honeycomb or higher:
     *        {@code com.google.api.client.extensions.android.json.AndroidJsonFactory}</li>
     *        </ul>
     * @param httpRequestInitializer HTTP request initializer or {@code null} for none
     * @since 1.7
     */
    public Builder(com.google.api.client.http.HttpTransport transport, com.google.api.client.json.JsonFactory jsonFactory,
        com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
      super(
          transport,
          jsonFactory,
          DEFAULT_ROOT_URL,
          DEFAULT_SERVICE_PATH,
          httpRequestInitializer,
          false);
    }

    /** Builds a new instance of {@link Showup}. */
    @Override
    public Showup build() {
      return new Showup(this);
    }

    @Override
    public Builder setRootUrl(String rootUrl) {
      return (Builder) super.setRootUrl(rootUrl);
    }

    @Override
    public Builder setServicePath(String servicePath) {
      return (Builder) super.setServicePath(servicePath);
    }

    @Override
    public Builder setHttpRequestInitializer(com.google.api.client.http.HttpRequestInitializer httpRequestInitializer) {
      return (Builder) super.setHttpRequestInitializer(httpRequestInitializer);
    }

    @Override
    public Builder setApplicationName(String applicationName) {
      return (Builder) super.setApplicationName(applicationName);
    }

    @Override
    public Builder setSuppressPatternChecks(boolean suppressPatternChecks) {
      return (Builder) super.setSuppressPatternChecks(suppressPatternChecks);
    }

    @Override
    public Builder setSuppressRequiredParameterChecks(boolean suppressRequiredParameterChecks) {
      return (Builder) super.setSuppressRequiredParameterChecks(suppressRequiredParameterChecks);
    }

    @Override
    public Builder setSuppressAllChecks(boolean suppressAllChecks) {
      return (Builder) super.setSuppressAllChecks(suppressAllChecks);
    }

    /**
     * Set the {@link ShowupRequestInitializer}.
     *
     * @since 1.12
     */
    public Builder setShowupRequestInitializer(
        ShowupRequestInitializer showupRequestInitializer) {
      return (Builder) super.setGoogleClientRequestInitializer(showupRequestInitializer);
    }

    @Override
    public Builder setGoogleClientRequestInitializer(
        com.google.api.client.googleapis.services.GoogleClientRequestInitializer googleClientRequestInitializer) {
      return (Builder) super.setGoogleClientRequestInitializer(googleClientRequestInitializer);
    }
  }
}
